; Standard adventure source, copyright (C) 1987 Level 9 Computing.
;
; SCONST, game-specific constants. You will probably need to change 
; most of the values of these. 
;
; A standard labelling convention for constants is that constants 
; preceded by I (e.g ILOOK) are relative to their appropriate offset 
; (e.g verboffset).
;
CONST
 DEBUGMODE=0 ; enables/disables debug text

 Lancelot=2004 ; unique game identifier value
 RootRoom=45 ; destination of all floor pointers
 SHORTroomDESCS=800
 LONGroomDESCS=1100

 MAXMOVEABLE=89 ; MAX OBJECT WHICH MAY BE TAKEN, THROWN ETC.
 MAXMOVEAPLUS1=90

 minsceneryobj=180
 minsceneryobjminus1=179
 maxsceneryobj=190
 maxsceneryobjplus1=191
 minsobjtimes2minus1=359
 maxsceneryobjtimes2plus2=382
 numsceneryobjplus1=11

 minclothes=80
 maxclothes=89

 minroomobject=90
 maxroomobject=109
 maxroomobjectplus1=110

 minallobject=20
 maxallobject=89

 MAXOBJECTVISIBLE=119
 MAXOBJECT=189 ; includes scenery objects.
; goes wrong for maxobject>190 (dunno why!)
; - inventory gets a funny value for hisearchpos (24)
 MAXOBJECTPLUS1=190
 
 MINOMNI=190 ; 158 ; all real objects above this are omni-present
 MINOMNIMINUS1=189 ; 159
 MAXOMNI=260 ; must include ieverything, except, it

; Preposition values (all relative to prepoffset)
 growingfrom=9
 FASTENEDTO=14
 through=209

; VERBS...
 iburn=115
 ikiss=129
 itakegoldtopub=137 ; for npcs only
 ipast=162
 iwalk=164
 icatch=165

 scmax=75
 scmaxplus1=76

 VisitTableStart=76 ; 34
 VisitTableEnd=255 ; 213 ; VisitTableStart + (179=num of "Real" rooms)

 MeetingTable=255 ; 213
 MeetingTableEnd=319 ; 277 ; meetingTable+MaxNpc

 SizeFloorPointerTable=100 ; number of floorpointers

; Objects..
 user=1
 Sue=2
 Vera=3
 Kathy=4
 Anthony=5
 William=6
 Robert=7
 Fiona=8
 Clifford=9
 Jarvis=10
 Inspector=11
;
 breadknife=20
;
 pinnafore=80
;
 wardrobe=90
 chest=91
 bed=92
 chair=93
 toilet=94
 sink=95
 footbath=96
 Ntable=97
 sofa=98
 stove=99
 washer=100
 window=101
 beehive=102
 fountain=103
 bathtub=104
 fridge=105
;
 telephone=110
 doorbell=111
;
 arrivalroom=3 ; room "outside" the grange

 ithing=246
 iroom=243

; special racetrack conditional objects
 jarvisphonedpolice=240
 isroomemptyexceptuser=250
 intermittent=251
 readyformurder=252
 dinnerisready=253
 dinnerisserved=254
 isroomempty=255

 minpeople=1 ; = creaturebase
 maxpeople=11 ;
 maxpeopleplus1=12

 creaturebase=1 ; including people, user etc.
 creaturebaseminus1=0 ; including people, user etc.
 MINNPC=2 ; all except user
 MINNPCMINUS1=1 ; all except user
 MAXNPC=11
 MAXNPCPLUS1=12
 MAXTALKINGNPCPLUS1=12

; npc status in list 6..
 NPCTABLESIZE=96 ; MAXNPCPLUS1*NpcEntrySize
 NPCTABLESIZEPLUS8=104
 NPCCURRENTOFFSET=0
 NPCENTRYSIZE=8
 
; npc command queues follow the above in list 6..
 npcstackbase=96 ; immediately after npc table
 npcstackbaseplus5=101
 maxnpcentries=52 ; 5 bytes per queued-command entry on stack
 npcstackentrysize=5 ; each entry is 5 bytes (hence the 5's above)
 npctablesizetozero=1535 ; now fixed. was 785

; offsets within each npc table entry in list 6..
 enemyoffset=0
 followoffset=1 ; person to follow normally
 masteroffset=2 ; the person or creature who subdued this npc
 hitpointoffset=3
 hatredoffset=4 ; the amount which this npc hates its enemy
 npcptroffset=5
 boredomoffset=6

; and offsets within each corresponding entry in npcinitial, list 5..
 attackoffset=2
 obedienceoffset=4
 patienceoffset=5
 goldsingingoffset=6 ; in static data - word (hi byte first)

; consts moved from aparse...
 anything=254
 matchwith=253

TABLE
 list6=6

; game-specific variables...
VAR
;; GMJ 26/09/89 ;; TotalMoves
 ProblemObject
;; GMJ 26/09/89 ;; ProblemVerb
;; GMJ 26/09/89 ;; gdCurrentSave gdHiSave
 GeneralScoreAddition

; vars moved here from aparse...
;; GMJ 26/09/89 ;; CSAVEHISEARCHPOS
 EVENTUALPREP
;; GMJ 26/09/89 ;; parseerrors skiponerror
;; GMJ 26/09/89 ;; tableptr verbend
 noun1lower noun1upper
;; GMJ 26/09/89 ;; cvsaveverb cvsavenoun1 cvsavenoun2 cvsaveprep cvsavecurrentobject
;; GMJ 26/09/89 ;; cvsavehisearchpos cvsavesearchpos
 gdnoun1pos noun1isgd
;; GMJ 26/09/89 ;; gdmaxobject
;; GMJ 26/09/89 ;; gperror
;; GMJ 26/09/89 ;; lastpossibleverb nextverb
;; GMJ 26/09/89 ;; gdnouncalled

 PersonArriving ; set to Actor currently arriving at manor. remains set 
; until they are shown by jarvis their room.
 FrontDoorOpened ; set momentarily when someone passes through the 
; front door
 Murder ; game number (1-9)
; Vars used for special racetrack conditionals
 Vreadyformurder ; set when murder triggered - cleared when commited
 Vdinnerisready
 Vdinnerisserved
 Vjarvisphonedpolice
 Vmurderbeendone
 Involvednpc1
 Involvednpc2
 Involvednpc3 ; up to 3 npcs involved in murder (inc. victim)
 StartDistractions ; table of distractions
 SimulateJarvis ; set while simulation of jarvis entering room
 CurrentNotePage ; current page in notebook
 VaryNullNote ; counter for a group of 5 'nothing happened' notes
; wardopen
; chestopen ; flags for open objects
; fridgeopen
